'''
【题目描述】
某次科研调查时得到了 n 个自然数。已知不相同的数不超过 10000 个，
现在需要统计这些自然数各自出现的次数，并按照自然数从小到大的顺序输出统计结果。
【输入描述】
第 1 行是整数 n，表示自然数的个数。第 2~n+1 行每行一个自然数。其中，1 <= n <= 2×10^5，
每个数均不超过 1.5×10^9。
【输出描述】
输出 m 行 ( m 为 n 个自然数中不相同数的个数 )，按照自然数从小到大的顺序输出。
每行输出两个整数，分别是自然数和该数出现的次数，其间用一个空格隔开。
【输入样例】
8
2
4
2
4
5
100
2
100
【输出样例】
2 3
4 2
5 1
100 2
'''

n=int(input())
nums={}  # 声明了一个空字典，用于记录数字出现的次数
for i in range(n):
    x=int(input())  # 将用户输入的数字赋值给变量`x`
    if x in nums.keys():
        nums[x]+=1 # ` 如果数字x已经在`nums`字典的键中，则将其对应的值加1。
    else:
        nums[x]=1 # 如果数字x不在字典的键中，则将其添加为新的键，并设置其值为1。
key=list(nums.keys())  # 将`nums`字典的所有键转换为一个列表
key.sort()     # 将键列表升序排列
for i in key:
    print(i,nums[i])   # 输出键i以及对应的值，即数字i出现的次数


'''
n=int(input())
nums=[]
for i in range(n):
    nums.append(int(input()))   # 读n行的数字
key=list(set(nums))             # 去重，再转为 list，因为 list 才能 sort
key.sort()
for i in key:
    print(i,nums.count(i))      # 这里超时
'''